1. Technical Field
Present invention embodiments relate to testing of software on computer systems, and more specifically, to automatically generating executable test cases for extract, transform, load (ETL) or other jobs implemented as a service of a server or other system.
2. Discussion of the Related Art
Ensuring quality of software is a challenging task. In addition to producing software with good design and programming practices, software needs to be tested to ensure quality. The earlier that errors (or bugs) are identified in the software development process, the less costly the errors are to fix. Accordingly, testing should occur as the software is developed, where a test suite may be employed to identify any regressions that may have occurred due to changes in the software.
Typically, software components depend on other software components for proper operation, such as in a client-server environment, in this case, a dependent software component may be inoperable due to a change in the parent software component from which the dependent software component relies. Software that provides a server-side service must have a higher quality standard since many client components are dependent on this software to function correctly. A common type of server-side service is a Hypertext Transfer Protocol (HTTP) service, specifically, one that uses a Representational State Transfer (REST) design paradigm. This type of service is typically implemented in Java, using a Java API for REST Web Services, commonly referred to as “JAX-RS”.
When development resources are limited, time to produce test cases and enable automation is scarce. Since development schedule pressures usually focus on core code functional completion, producing test code is often deferred until the end of the development cycle (if even performed). In addition, a client component that is dependent on a server-side component, such as a web user interface application, typically fails to cover testing of server interfaces, and often becomes inoperable when a server interface (or data provided by that interface) changes. For example, when a client component, such as a web user interface application, becomes inoperable due to a server-side change, determining the cause of the error can be misleading, costly, and error prone. A client component often has no control over the server-side component, which could be owned by another company or reside in a public domain.
Typically, testing in these scenarios may be obviated (no test case creation) or performed by manual tests built by sniffing HTTP traffic, JUnit development (a unit testing framework for Java) of Java Classes for testing, or using a graphical user interface (GUI) to find server-side issues. However, these testing approaches are manual and often do not test the correct component, such as the server system in a client-server environment.